package org.jsola.hr.service;

import org.jsola.hr.dto.SyncSocUniversalDTO;
import org.jsola.hr.dto.SyncSocWebSiteDTO;
import org.jsola.hr.query.SocCheckCustomQuery;
import org.jsola.user.core.TokenUser;

import java.util.List;
import java.util.Map;

/**
 * @author lyh
 */
public interface ISyncSocInterface {


    /**
     * 社保同步,社保通用增员
     *
     * @param syncSocWebSiteDTO 增员参数
     * @param tokenUser         当前用户
     * @return 增员条数
     */
    <T> List<T> incrementSocEmp(SyncSocWebSiteDTO syncSocWebSiteDTO, TokenUser tokenUser);

    /**
     * 社保同步,社保通用减员
     *
     * @param syncSocWebSiteDTO 减员参数
     * @param tokenUser         当前用户
     * @return 减员条数
     */
    <T> List<T> decreaseSocEmp(SyncSocWebSiteDTO syncSocWebSiteDTO, TokenUser tokenUser);


    /**
     * 社保同步,医保通用增员
     *
     * @param syncSocWebSiteDTO 增员参数
     * @param tokenUser         当前用户
     * @return 增员条数
     */
    int incrementMeEmp(SyncSocWebSiteDTO syncSocWebSiteDTO, TokenUser tokenUser);

    /**
     * 社保同步,医保通用减员
     *
     * @param syncSocWebSiteDTO 减员参数
     * @param tokenUser         当前用户
     * @return 减员条数
     */
    int decreaseMeEmp(SyncSocWebSiteDTO syncSocWebSiteDTO, TokenUser tokenUser);

    /**
     * 社保同步,公积金通用增员
     *
     * @param syncSocWebSiteDTO 增员参数
     * @param tokenUser         当前用户
     * @return 增员条数
     */
    int incrementPfEmp(SyncSocWebSiteDTO syncSocWebSiteDTO, TokenUser tokenUser);

    /**
     * 社保同步,公积金通用减员
     *
     * @param syncSocWebSiteDTO 减员参数
     * @param tokenUser         当前用户
     * @return 减员条数
     */
    int decreasePfEmp(SyncSocWebSiteDTO syncSocWebSiteDTO, TokenUser tokenUser);

    /**
     * 社保同步,同步社保
     *
     * @param syncSocWebSiteDTO 同步参数
     * @param tokenUser         当前用户
     * @return 同步条数
     */
    List<SyncSocUniversalDTO> batchSyncSocInfo(SyncSocWebSiteDTO syncSocWebSiteDTO, TokenUser tokenUser);

    /**
     * 社保同步,同步医保
     *
     * @param syncSocWebSiteDTO 同步参数
     * @param tokenUser         当前用户
     * @return 同步条数
     */
    List<SyncSocUniversalDTO> batchSyncMeInfo(SyncSocWebSiteDTO syncSocWebSiteDTO, TokenUser tokenUser);

    /**
     * 社保同步,同步公积金
     *
     * @param syncSocWebSiteDTO 同步参数
     * @param tokenUser         当前用户
     * @return 同步条数
     */
    List<SyncSocUniversalDTO> batchSyncPfInfo(SyncSocWebSiteDTO syncSocWebSiteDTO, TokenUser tokenUser);

    /**
     * 社保同步,校验
     *
     * @param socCheckCustomQuery 校验参数
     * @param tokenUser           当前用户
     * @return 校验结果
     */
    Map<String, List<SyncSocUniversalDTO>> checkInfo(SocCheckCustomQuery socCheckCustomQuery, TokenUser tokenUser);
}
